#pragma once

#define BASETOOLSCLASS_CLASS            "BassToolsClass.Class" 
#define BASETOOLSCLASS_FACTORY_CLASS	"BaseToolsClass.Factory.Class"  
#define BASETOOLSCLASS_FACTORY_OBJ      "BaseToolsClass.Factory"


class CBaseToolsClass
{
public:
	static int AttachEventListener(lua_State* luaState);
	static int DeleteSelf(lua_State* luaState);
	static int ListenerCallBack(DWORD dwParam1,DWORD dwParam2,int nIndex);
	static int RegisterClass(XL_LRT_ENV_HANDLE hEnv);

	//---------------------------------
	static int GetDeviceCaps(lua_State* luaState);

};

//-------------------------//

class CBaseToolsClassFactory
{
public:
	static CBaseToolsClassFactory* Instance();
	static int CreateInstance(lua_State* luaState);
	static void RegisterObj(XL_LRT_ENV_HANDLE hEnv);
private:
	static CBaseToolsClassFactory* m_pObj;
};